home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / drivers / segar.c < prev    next >
C/C++ Source or Header  |  2000-04-14  |  70KB  |  1,830 lines

  1. /***************************************************************************
  2.  
  3. Sega G-80 Raster drivers
  4.  
  5. The known G-80 Raster games are Astro Blaster, Monster Bash, 005,
  6. Space Odyssey, Pig Newton, and Sindbad Mystery.
  7.  
  8. See also sega.c for the Sega G-80 Vector games.
  9.  
  10. Many thanks go to Dave Fish for the fine detective work he did into the
  11. G-80 security chips (315-0064, 315-0070, 315-0076, 315-0082) which provided
  12. me with enough information to emulate those chips at runtime along with
  13. the 315-0062 Astro Blaster chip and the 315-0063 Space Odyssey chip.
  14.  
  15. Special note (24-MAR-1999) - Sindbad Mystery does *not* use the standard
  16. G-80 security chip; rather, it uses the Sega System 1 encryption.
  17.  
  18. Thanks also go to Paul Tonizzo, Clay Cowgill, John Bowes, and Kevin Klopp
  19. for all the helpful information, samples, and schematics!
  20.  
  21. TODO:
  22. - locate Pig Newton cocktail mode?
  23. - verify Pig Newton and Sindbad Mystery DIPs
  24. - attempt Pig Newton, 005 sound
  25. - fix transparency issues (Pig Newton, Sindbad Mystery)
  26. - fix Space Odyssey background
  27. - figure out why Astro Blaster version 1 ends the game right away
  28.  
  29. - Mike Balfour (mab22@po.cwru.edu)
  30.  
  31. ***************************************************************************
  32.  
  33. 26/3/2000:    ** Darren Hatton (UKVAC) / Adrian Purser (UKVAC) **
  34.             Added a 3rd Astro Blaster ROM set (ASTROB2).
  35.             Updated Dip Switches to be correct for the Astro Blaster sets.
  36.  
  37. ***************************************************************************/
  38.  
  39. #include "driver.h"
  40. #include "vidhrdw/generic.h"
  41. #include "cpu/i8039/i8039.h"
  42. #include "cpu/z80/z80.h"
  43.  
  44. /* sndhrdw/segar.c */
  45.  
  46. WRITE_HANDLER( astrob_speech_port_w );
  47. WRITE_HANDLER( astrob_audio_ports_w );
  48. WRITE_HANDLER( spaceod_audio_ports_w );
  49. WRITE_HANDLER( monsterb_audio_8255_w );
  50.  READ_HANDLER( monsterb_audio_8255_r );
  51.  
  52.  READ_HANDLER( monsterb_sh_rom_r );
  53.  READ_HANDLER( monsterb_sh_t1_r );
  54.  READ_HANDLER( monsterb_sh_command_r );
  55. WRITE_HANDLER( monsterb_sh_dac_w );
  56. WRITE_HANDLER( monsterb_sh_busy_w );
  57. WRITE_HANDLER( monsterb_sh_offset_a0_a3_w );
  58. WRITE_HANDLER( monsterb_sh_offset_a4_a7_w );
  59. WRITE_HANDLER( monsterb_sh_offset_a8_a11_w );
  60. WRITE_HANDLER( monsterb_sh_rom_select_w );
  61.  
  62. /* temporary speech handling through samples */
  63. int astrob_speech_sh_start(const struct MachineSound *msound);
  64. void astrob_speech_sh_update(void);
  65.  
  66. /* sample names */
  67. extern const char *astrob_sample_names[];
  68. extern const char *s005_sample_names[];
  69. extern const char *monsterb_sample_names[];
  70. extern const char *spaceod_sample_names[];
  71.  
  72. /* machine/segar.c */
  73.  
  74. void sega_security(int chip);
  75. WRITE_HANDLER( segar_w );
  76.  
  77. extern unsigned char *segar_mem;
  78.  
  79. /* machine/segacrpt.c */
  80.  
  81. void sindbadm_decode(void);
  82.  
  83. /* vidhrdw/segar.c */
  84.  
  85. extern unsigned char *segar_characterram;
  86. extern unsigned char *segar_characterram2;
  87. extern unsigned char *segar_mem_colortable;
  88. extern unsigned char *segar_mem_bcolortable;
  89.  
  90. WRITE_HANDLER( segar_characterram_w );
  91. WRITE_HANDLER( segar_characterram2_w );
  92. WRITE_HANDLER( segar_colortable_w );
  93. WRITE_HANDLER( segar_bcolortable_w );
  94. void segar_init_colors(unsigned char *palette, unsigned short *colortable,const unsigned char *color_prom);
  95. WRITE_HANDLER( segar_video_port_w );
  96. int  segar_vh_start(void);
  97. void segar_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  98.  
  99. WRITE_HANDLER( monsterb_back_port_w );
  100. int  monsterb_vh_start(void);
  101. void monsterb_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  102.  
  103. int  spaceod_vh_start(void);
  104. void spaceod_vh_stop(void);
  105. WRITE_HANDLER( spaceod_back_port_w );
  106. WRITE_HANDLER( spaceod_backshift_w );
  107. WRITE_HANDLER( spaceod_backshift_clear_w );
  108. WRITE_HANDLER( spaceod_backfill_w );
  109. WRITE_HANDLER( spaceod_nobackfill_w );
  110. void spaceod_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  111.  
  112. WRITE_HANDLER( pignewt_back_color_w );
  113. WRITE_HANDLER( pignewt_back_ports_w );
  114.  
  115. WRITE_HANDLER( sindbadm_back_port_w );
  116. void sindbadm_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  117.  
  118. /***************************************************************************
  119.  
  120.   The Sega games use NMI to trigger the self test. We use a fake input port to
  121.   tie that event to a keypress.
  122.  
  123. ***************************************************************************/
  124. static int segar_interrupt(void)
  125. {
  126.     if (readinputport(5) & 1)       /* get status of the F2 key */
  127.         return nmi_interrupt(); /* trigger self test */
  128.     else return interrupt();
  129. }
  130.  
  131. /***************************************************************************
  132.  
  133.   The Sega games store the DIP switches in a very mangled format that's
  134.   not directly useable by MAME.  This function mangles the DIP switches
  135.   into a format that can be used.
  136.  
  137.   Original format:
  138.   Port 0 - 2-4, 2-8, 1-4, 1-8
  139.   Port 1 - 2-3, 2-7, 1-3, 1-7
  140.   Port 2 - 2-2, 2-6, 1-2, 1-6
  141.   Port 3 - 2-1, 2-5, 1-1, 1-5
  142.   MAME format:
  143.   Port 6 - 1-1, 1-2, 1-3, 1-4, 1-5, 1-6, 1-7, 1-8
  144.   Port 7 - 2-1, 2-2, 2-3, 2-4, 2-5, 2-6, 2-7, 2-8
  145. ***************************************************************************/
  146. static READ_HANDLER( segar_ports_r )
  147. {
  148.     int dip1, dip2;
  149.  
  150.     dip1 = input_port_6_r(offset);
  151.     dip2 = input_port_7_r(offset);
  152.  
  153.     switch(offset)
  154.     {
  155.         case 0:
  156.            return ((input_port_0_r(0) & 0xF0) | ((dip2 & 0x08)>>3) | ((dip2 & 0x80)>>6) |
  157.                         ((dip1 & 0x08)>>1) | ((dip1 & 0x80)>>4));
  158.         case 1:
  159.            return ((input_port_1_r(0) & 0xF0) | ((dip2 & 0x04)>>2) | ((dip2 & 0x40)>>5) |
  160.                         ((dip1 & 0x04)>>0) | ((dip1 & 0x40)>>3));
  161.         case 2:
  162.            return ((input_port_2_r(0) & 0xF0) | ((dip2 & 0x02)>>1) | ((dip2 & 0x20)>>4) |
  163.                         ((dip1 & 0x02)<<1) | ((dip1 & 0x20)>>2));
  164.         case 3:
  165.            return ((input_port_3_r(0) & 0xF0) | ((dip2 & 0x01)>>0) | ((dip2 & 0x10)>>3) |
  166.                         ((dip1 & 0x01)<<2) | ((dip1 & 0x10)>>1));
  167.         case 4:
  168.            return input_port_4_r(0);
  169.     }
  170.  
  171.     return 0;
  172. }
  173.  
  174.  
  175. /***************************************************************************
  176.  Main memory handlers
  177. ***************************************************************************/
  178.  
  179. static struct MemoryReadAddress readmem[] =
  180. {
  181.     { 0x0000, 0xc7ff, MRA_ROM },
  182.     { 0xc800, 0xcfff, MRA_RAM },    /* Misc RAM */
  183.     { 0xe000, 0xe3ff, MRA_RAM },
  184.     { 0xe400, 0xe7ff, MRA_RAM },  /* Used by at least Monster Bash? */
  185.     { 0xe800, 0xefff, MRA_RAM },
  186.     { 0xf000, 0xf03f, MRA_RAM },     /* Dynamic color table */
  187.     { 0xf040, 0xf07f, MRA_RAM },    /* Dynamic color table for background (Monster Bash)*/
  188.     { 0xf080, 0xf7ff, MRA_RAM },
  189.     { 0xf800, 0xffff, MRA_RAM },
  190.     { -1 }  /* end of table */
  191. };
  192.  
  193.  
  194. static struct MemoryWriteAddress writemem[] =
  195. {
  196.     { 0x0000, 0xffff, segar_w, &segar_mem },
  197.     { 0xe000, 0xe3ff, MWA_RAM, &videoram, &videoram_size },    /* handled by */
  198.     { 0xe800, 0xefff, MWA_RAM, &segar_characterram },        /* the above, */
  199.     { 0xf000, 0xf03f, MWA_RAM, &segar_mem_colortable },     /* here only */
  200.     { 0xf040, 0xf07f, MWA_RAM, &segar_mem_bcolortable },    /* to initialize */
  201.     { 0xf800, 0xffff, MWA_RAM, &segar_characterram2 },        /* the pointers */
  202.     { -1 }
  203. };
  204.  
  205. static struct MemoryReadAddress sindbadm_readmem[] =
  206. {
  207.     { 0x0000, 0xc7ff, MRA_ROM },
  208.     { 0xc800, 0xcfff, MRA_RAM },    /* Misc RAM */
  209.     { 0xe000, 0xe3ff, MRA_RAM },
  210.     { 0xe400, 0xe7ff, MRA_RAM },  /* Used by at least Monster Bash? */
  211.     { 0xe800, 0xefff, MRA_RAM },
  212.     { 0xf000, 0xf03f, MRA_RAM },    /* NOTE, the two color tables are flipped! */
  213.     { 0xf040, 0xf07f, MRA_RAM },
  214.     { 0xf080, 0xf7ff, MRA_RAM },
  215.     { 0xf800, 0xffff, MRA_RAM },
  216.     { -1 }  /* end of table */
  217. };
  218.  
  219. static struct MemoryWriteAddress sindbadm_writemem[] =
  220. {
  221.     { 0x0000, 0xc7ff, MWA_ROM },
  222.     { 0xc800, 0xcfff, MWA_RAM },
  223.     { 0xe000, 0xe3ff, videoram_w, &videoram, &videoram_size },
  224.     { 0xe400, 0xe7ff, MWA_RAM },
  225.     { 0xe800, 0xefff, segar_characterram_w, &segar_characterram },
  226.     { 0xf000, 0xf03f, segar_bcolortable_w, &segar_mem_bcolortable },    /* NOTE, the two color tables are flipped! */
  227.     { 0xf040, 0xf07f, segar_colortable_w, &segar_mem_colortable },
  228.     { 0xf080, 0xf7ff, MWA_RAM },
  229.     { 0xf800, 0xffff, segar_characterram2_w, &segar_characterram2 },
  230.     { -1 }  /* end of table */
  231. };
  232.  
  233.  
  234. static struct IOReadPort readport[] =
  235. {
  236. //{0x3f, 0x3f, MRA_NOP }, /* Pig Newton - read from 1D87 */
  237.     { 0x0e, 0x0e, monsterb_audio_8255_r },
  238.     { 0x81, 0x81, input_port_8_r },     /* only used by Sindbad Mystery */
  239.     { 0xf8, 0xfc, segar_ports_r },
  240.     { -1 }  /* end of table */
  241. };
  242.  
  243. static struct IOWritePort astrob_writeport[] =
  244. {
  245.     { 0x38, 0x38, astrob_speech_port_w },
  246.     { 0x3e, 0x3f, astrob_audio_ports_w },
  247.     { 0xbf, 0xbf, segar_video_port_w }, /* bit0=cocktail flip, bit1=write to color RAM, bit2=always on? */
  248.     { -1 }  /* end of table */
  249. };
  250.  
  251. static struct IOWritePort spaceod_writeport[] =
  252. {
  253.     { 0x08, 0x08, spaceod_back_port_w },
  254.     { 0x09, 0x09, spaceod_backshift_clear_w },
  255.     { 0x0a, 0x0a, spaceod_backshift_w },
  256.     { 0x0b, 0x0c, spaceod_nobackfill_w }, /* I'm not sure what these ports really do */
  257.     { 0x0d, 0x0d, spaceod_backfill_w },
  258.     { 0x0e, 0x0f, spaceod_audio_ports_w },
  259.     { 0xbf, 0xbf, segar_video_port_w }, /* bit0=cocktail flip, bit1=write to color RAM, bit2=always on? */
  260.     { -1 }  /* end of table */
  261. };
  262.  
  263. static struct IOWritePort writeport_005[] =
  264. {
  265.     { 0xbf, 0xbf, segar_video_port_w }, /* bit0=cocktail flip, bit1=write to color RAM, bit2=always on? */
  266.     { -1 }  /* end of table */
  267. };
  268.  
  269. static struct IOWritePort monsterb_writeport[] =
  270. {
  271.     { 0x0c, 0x0f, monsterb_audio_8255_w },
  272.     { 0xbc, 0xbc, monsterb_back_port_w },
  273.     { 0xbf, 0xbf, segar_video_port_w }, /* bit0=cocktail flip, bit1=write to color RAM, bit2=always on? */
  274.     { -1 }  /* end of table */
  275. };
  276.  
  277. static struct IOWritePort pignewt_writeport[] =
  278. {
  279.     { 0xb4, 0xb5, pignewt_back_color_w },   /* Just guessing */
  280.     { 0xb8, 0xbc, pignewt_back_ports_w },   /* Just guessing */
  281.     { 0xbe, 0xbe, MWA_NOP },            /* probably some type of music register */
  282.     { 0xbf, 0xbf, segar_video_port_w }, /* bit0=cocktail flip, bit1=write to color RAM, bit2=always on? */
  283.     { -1 }  /* end of table */
  284. };
  285.  
  286. static WRITE_HANDLER( sindbadm_soundport_w )
  287. {
  288.     soundlatch_w(0,data);
  289.     cpu_cause_interrupt(1,Z80_NMI_INT);
  290.     /* spin for a while to let the Z80 read the command (fixes hanging sound in Regulus) */
  291.     cpu_spinuntil_time(TIME_IN_USEC(50));
  292. }
  293.  
  294. /* the data lines are flipped */
  295. static WRITE_HANDLER( sindbadm_SN76496_0_w )
  296. {
  297.     int flipped = ((data >> 7) & 0x01) | ((data >> 5) & 0x02) | ((data >> 3) & 0x04) | ((data >> 1) & 0x08) |
  298.                   ((data << 1) & 0x10) | ((data << 3) & 0x20) | ((data << 5) & 0x40) | ((data << 7) & 0x80);
  299.  
  300.     SN76496_0_w(offset, flipped);
  301. }
  302.  
  303. static WRITE_HANDLER( sindbadm_SN76496_1_w )
  304. {
  305.     int flipped = ((data >> 7) & 0x01) | ((data >> 5) & 0x02) | ((data >> 3) & 0x04) | ((data >> 1) & 0x08) |
  306.                   ((data << 1) & 0x10) | ((data << 3) & 0x20) | ((data << 5) & 0x40) | ((data << 7) & 0x80);
  307.  
  308.     SN76496_1_w(offset, flipped);
  309. }
  310.  
  311.  
  312. static struct IOWritePort sindbadm_writeport[] =
  313. {
  314. //      { 0x00, 0x00, ???_w }, /* toggles on and off immediately (0x01, 0x00) */
  315.     { 0x41, 0x41, sindbadm_back_port_w },
  316.     { 0x43, 0x43, segar_video_port_w }, /* bit0=cocktail flip, bit1=write to color RAM, bit2=always on? */
  317.     { 0x80, 0x80, sindbadm_soundport_w },    /* sound commands */
  318.     { -1 }  /* end of table */
  319. };
  320.  
  321.  
  322. /***************************************************************************
  323.  Sound memory handlers
  324. ***************************************************************************/
  325.  
  326. static struct MemoryReadAddress speech_readmem[] =
  327. {
  328.     { 0x0000, 0x07ff, MRA_ROM },
  329.     { -1 }  /* end of table */
  330. };
  331.  
  332. static struct MemoryWriteAddress speech_writemem[] =
  333. {
  334.     { 0x0000, 0x07ff, MWA_ROM },
  335.     { -1 }  /* end of table */
  336. };
  337.  
  338. static struct IOReadPort speech_readport[] =
  339. {
  340.     { -1 }  /* end of table */
  341. };
  342.  
  343. static struct IOWritePort speech_writeport[] =
  344. {
  345.     { -1 }  /* end of table */
  346. };
  347.  
  348. static struct MemoryReadAddress monsterb_7751_readmem[] =
  349. {
  350.     { 0x0000, 0x03ff, MRA_ROM },
  351.     { -1 }  /* end of table */
  352. };
  353.  
  354. static struct MemoryWriteAddress monsterb_7751_writemem[] =
  355. {
  356.     { 0x0000, 0x03ff, MWA_ROM },
  357.     { -1 }  /* end of table */
  358. };
  359.  
  360. static struct IOReadPort monsterb_7751_readport[] =
  361. {
  362.     { I8039_t1,  I8039_t1,  monsterb_sh_t1_r },
  363.     { I8039_p2,  I8039_p2,  monsterb_sh_command_r },
  364.     { I8039_bus, I8039_bus, monsterb_sh_rom_r },
  365.     { -1 }  /* end of table */
  366. };
  367.  
  368. static struct IOWritePort monsterb_7751_writeport[] =
  369. {
  370.     { I8039_p1, I8039_p1, monsterb_sh_dac_w },
  371.     { I8039_p2, I8039_p2, monsterb_sh_busy_w },
  372.     { I8039_p4, I8039_p4, monsterb_sh_offset_a0_a3_w },
  373.     { I8039_p5, I8039_p5, monsterb_sh_offset_a4_a7_w },
  374.     { I8039_p6, I8039_p6, monsterb_sh_offset_a8_a11_w },
  375.     { I8039_p7, I8039_p7, monsterb_sh_rom_select_w },
  376.     { -1 }  /* end of table */
  377. };
  378.  
  379. static struct MemoryReadAddress sindbadm_sound_readmem[] =
  380. {
  381.     { 0x0000, 0x1fff, MRA_ROM },
  382.     { 0x8000, 0x87ff, MRA_RAM },
  383.     { 0xe000, 0xe000, soundlatch_r },
  384.     { -1 }  /* end of table */
  385. };
  386.  
  387. static struct MemoryWriteAddress sindbadm_sound_writemem[] =
  388. {
  389.     { 0x0000, 0x1fff, MWA_ROM },
  390.     { 0x8000, 0x87ff, MWA_RAM },
  391.     { 0xa000, 0xa003, sindbadm_SN76496_0_w },    /* the four addresses are written */
  392.     { 0xc000, 0xc003, sindbadm_SN76496_1_w },    /* in sequence */
  393.     { -1 }  /* end of table */
  394. };
  395.  
  396.  
  397. /***************************************************************************
  398. Input Ports
  399. ***************************************************************************/
  400.  
  401. /* This fake input port is used for DIP Switch 2
  402.    For all games except Sindbad Mystery that has different coinage */
  403. #define COINAGE PORT_START \
  404.     PORT_DIPNAME( 0x0f, 0x0c, DEF_STR( Coin_B ) ) \
  405.     PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) ) \
  406.     PORT_DIPSETTING(    0x08, DEF_STR( 3C_1C ) ) \
  407.     PORT_DIPSETTING(    0x04, DEF_STR( 2C_1C ) ) \
  408.     PORT_DIPSETTING(    0x09, "2 Coins/1 Credit 5/3" ) \
  409.     PORT_DIPSETTING(    0x05, "2 Coins/1 Credit 4/3" ) \
  410.     PORT_DIPSETTING(    0x0c, DEF_STR( 1C_1C ) ) \
  411.     PORT_DIPSETTING(    0x0d, "1 Coin/1 Credit 5/6" ) \
  412.     PORT_DIPSETTING(    0x03, "1 Coin/1 Credit 4/5" ) \
  413.     PORT_DIPSETTING(    0x0b, "1 Coin/1 Credit 2/3" ) \
  414.     PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) ) \
  415.     PORT_DIPSETTING(    0x0f, "1 Coin/2 Credits 4/9" ) \
  416.     PORT_DIPSETTING(    0x07, "1 Coin/2 Credits 5/11" ) \
  417.     PORT_DIPSETTING(    0x0a, DEF_STR( 1C_3C ) ) \
  418.     PORT_DIPSETTING(    0x06, DEF_STR( 1C_4C ) ) \
  419.     PORT_DIPSETTING(    0x0e, DEF_STR( 1C_5C ) ) \
  420.     PORT_DIPSETTING(    0x01, DEF_STR( 1C_6C ) ) \
  421.     PORT_DIPNAME( 0xf0, 0xc0, DEF_STR( Coin_A ) ) \
  422.     PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) ) \
  423.     PORT_DIPSETTING(    0x80, DEF_STR( 3C_1C ) ) \
  424.     PORT_DIPSETTING(    0x40, DEF_STR( 2C_1C ) ) \
  425.     PORT_DIPSETTING(    0x90, "2 Coins/1 Credit 5/3" ) \
  426.     PORT_DIPSETTING(    0x50, "2 Coins/1 Credit 4/3" ) \
  427.     PORT_DIPSETTING(    0xc0, DEF_STR( 1C_1C ) ) \
  428.     PORT_DIPSETTING(    0xd0, "1 Coin/1 Credit 5/6" ) \
  429.     PORT_DIPSETTING(    0x30, "1 Coin/1 Credit 4/5" ) \
  430.     PORT_DIPSETTING(    0xb0, "1 Coin/1 Credit 2/3" ) \
  431.     PORT_DIPSETTING(    0x20, DEF_STR( 1C_2C ) ) \
  432.     PORT_DIPSETTING(    0xf0, "1 Coin/2 Credits 4/9" ) \
  433.     PORT_DIPSETTING(    0x70, "1 Coin/2 Credits 5/11" ) \
  434.     PORT_DIPSETTING(    0xa0, DEF_STR( 1C_3C ) ) \
  435.     PORT_DIPSETTING(    0x60, DEF_STR( 1C_4C ) ) \
  436.     PORT_DIPSETTING(    0xe0, DEF_STR( 1C_5C ) ) \
  437.     PORT_DIPSETTING(    0x10, DEF_STR( 1C_6C ) )
  438.  
  439.  
  440. INPUT_PORTS_START( astrob )
  441.     PORT_START      /* IN0 */
  442.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  443.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 )
  444.     PORT_BIT_IMPULSE( 0x40, IP_ACTIVE_LOW, IPT_COIN2, 3 )
  445.     PORT_BIT_IMPULSE( 0x80, IP_ACTIVE_LOW, IPT_COIN1, 3 )
  446.  
  447.     PORT_START      /* IN1 */
  448.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
  449.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
  450.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  451.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  452.  
  453.     PORT_START      /* IN2 */
  454.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  455.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_2WAY )
  456.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  457.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  458.  
  459.     PORT_START      /* IN3 */
  460.     PORT_BITX(0x10, IP_ACTIVE_LOW, IPT_BUTTON2, "Warp", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
  461.     PORT_BITX(0x20, IP_ACTIVE_LOW, IPT_BUTTON1, "Fire", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
  462.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  463.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  464.  
  465.     PORT_START      /* IN4 */
  466.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  467.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  468.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  469.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  470.     PORT_BITX(0x10, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_COCKTAIL, "Warp", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
  471.     PORT_BITX(0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL, "Fire", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
  472.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_COCKTAIL)
  473.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_COCKTAIL)
  474.  
  475.     PORT_START      /* FAKE */
  476.     /* This fake input port is used to get the status of the F2 key, */
  477.     /* and activate the test mode, which is triggered by a NMI */
  478.     PORT_BITX(0x01, IP_ACTIVE_HIGH, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
  479.  
  480.     PORT_START      /* FAKE */
  481.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
  482.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  483.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  484.     PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
  485.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  486.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  487.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
  488.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  489.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  490.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
  491.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  492.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  493.     PORT_DIPNAME( 0x10, 0x00, "Demo Speech" )
  494.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  495.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  496.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Cabinet ) )
  497.     PORT_DIPSETTING(    0x20, DEF_STR( Upright ) )
  498.     PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
  499.     PORT_DIPNAME( 0xc0, 0x80, DEF_STR( Lives ) )
  500.     PORT_DIPSETTING(    0x00, "2" )
  501.     PORT_DIPSETTING(    0x80, "3" )
  502.     PORT_DIPSETTING(    0x40, "4" )
  503.     PORT_DIPSETTING(    0xc0, "5" )
  504.  
  505.     COINAGE
  506.  
  507. INPUT_PORTS_END
  508.  
  509.  
  510. INPUT_PORTS_START( astrob2 )
  511.     PORT_START      /* IN0 */
  512.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  513.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 )
  514.     PORT_BIT_IMPULSE( 0x40, IP_ACTIVE_LOW, IPT_COIN2, 3 )
  515.     PORT_BIT_IMPULSE( 0x80, IP_ACTIVE_LOW, IPT_COIN1, 3 )
  516.  
  517.     PORT_START      /* IN1 */
  518.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
  519.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
  520.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  521.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  522.  
  523.     PORT_START      /* IN2 */
  524.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  525.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_2WAY )
  526.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  527.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  528.  
  529.     PORT_START      /* IN3 */
  530.     PORT_BITX(0x10, IP_ACTIVE_LOW, IPT_BUTTON2, "Warp", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
  531.     PORT_BITX(0x20, IP_ACTIVE_LOW, IPT_BUTTON1, "Fire", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
  532.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  533.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  534.  
  535.     PORT_START      /* IN4 */
  536.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  537.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  538.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  539.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  540.     PORT_BITX(0x10, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_COCKTAIL, "Warp", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
  541.     PORT_BITX(0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL, "Fire", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
  542.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_COCKTAIL)
  543.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_COCKTAIL)
  544.  
  545.     PORT_START      /* FAKE */
  546.     /* This fake input port is used to get the status of the F2 key, */
  547.     /* and activate the test mode, which is triggered by a NMI */
  548.     PORT_BITX(0x01, IP_ACTIVE_HIGH, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
  549.  
  550.     PORT_START      /* FAKE */
  551.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
  552.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  553.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  554.     PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
  555.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  556.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  557.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
  558.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  559.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  560.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
  561.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  562.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  563.     PORT_DIPNAME( 0x10, 0x00, "Demo Speech" )
  564.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  565.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  566.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Cabinet ) )
  567.     PORT_DIPSETTING(    0x20, DEF_STR( Upright ) )
  568.     PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
  569.     PORT_DIPNAME( 0xc0, 0x80, DEF_STR( Lives ) )
  570.     PORT_DIPSETTING(    0x00, "2" )
  571.     PORT_DIPSETTING(    0x80, "3" )
  572.   //PORT_DIPSETTING(    0x40, "3" )
  573.   //PORT_DIPSETTING(    0xc0, "3" )
  574.  
  575.     COINAGE
  576.  
  577. INPUT_PORTS_END
  578.  
  579.  
  580. INPUT_PORTS_START( astrob1 )
  581.     PORT_START      /* IN0 */
  582.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  583.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 )
  584.     PORT_BIT_IMPULSE( 0x40, IP_ACTIVE_LOW, IPT_COIN2, 3 )
  585.     PORT_BIT_IMPULSE( 0x80, IP_ACTIVE_LOW, IPT_COIN1, 3 )
  586.  
  587.     PORT_START      /* IN1 */
  588.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
  589.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
  590.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  591.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  592.  
  593.     PORT_START      /* IN2 */
  594.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_2WAY )
  595.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_2WAY )
  596.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  597.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  598.  
  599.     PORT_START      /* IN3 */
  600.     PORT_BITX(0x10, IP_ACTIVE_LOW, IPT_BUTTON2, "Warp", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
  601.     PORT_BITX(0x20, IP_ACTIVE_LOW, IPT_BUTTON1, "Fire", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
  602.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  603.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  604.  
  605.     PORT_START      /* IN4 */
  606.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  607.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  608.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  609.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  610.     PORT_BITX(0x10, IP_ACTIVE_HIGH, IPT_BUTTON2 | IPF_COCKTAIL, "Warp", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
  611.     PORT_BITX(0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL, "Fire", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
  612.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_2WAY | IPF_COCKTAIL)
  613.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_2WAY | IPF_COCKTAIL)
  614.  
  615.     PORT_START      /* FAKE */
  616.     /* This fake input port is used to get the status of the F2 key, */
  617.     /* and activate the test mode, which is triggered by a NMI */
  618.     PORT_BITX(0x01, IP_ACTIVE_HIGH, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
  619.  
  620.     PORT_START      /* FAKE */
  621.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
  622.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  623.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  624.     PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
  625.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  626.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  627.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
  628.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  629.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  630.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
  631.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  632.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  633.     PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
  634.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  635.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  636.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Cabinet ) )
  637.     PORT_DIPSETTING(    0x20, DEF_STR( Upright ) )
  638.     PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
  639.     PORT_DIPNAME( 0xc0, 0x80, DEF_STR( Lives ) )
  640.     PORT_DIPSETTING(    0x00, "2" )
  641.     PORT_DIPSETTING(    0x80, "3" )
  642.     PORT_DIPSETTING(    0x40, "4" )
  643.     PORT_DIPSETTING(    0xc0, "5" )
  644.  
  645.     COINAGE
  646.  
  647. INPUT_PORTS_END
  648.  
  649.  
  650. INPUT_PORTS_START( 005 )
  651.     PORT_START      /* IN0 */
  652.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  653.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 )
  654.     PORT_BIT_IMPULSE( 0x40, IP_ACTIVE_LOW, IPT_COIN2, 3 )
  655.     PORT_BIT_IMPULSE( 0x80, IP_ACTIVE_LOW, IPT_COIN1, 3 )
  656.  
  657.     PORT_START      /* IN1 */
  658.     /* better test those impulse */
  659.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
  660.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
  661.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  662.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  663.  
  664.     PORT_START      /* IN2 */
  665.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY )
  666.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_4WAY )
  667.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_4WAY )
  668.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  669.  
  670.     PORT_START      /* IN3 */
  671.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_4WAY )
  672.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
  673.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  674.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  675.  
  676.     PORT_START      /* IN4 */
  677.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  678.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  679.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  680.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_4WAY | IPF_COCKTAIL )
  681.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_4WAY | IPF_COCKTAIL)
  682.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL)
  683.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_COCKTAIL)
  684.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_4WAY | IPF_COCKTAIL)
  685.  
  686.     PORT_START      /* FAKE */
  687.     /* This fake input port is used to get the status of the F2 key, */
  688.     /* and activate the test mode, which is triggered by a NMI */
  689.     PORT_BITX(0x01, IP_ACTIVE_HIGH, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
  690.  
  691.     PORT_START      /* FAKE */
  692.     /* This fake input port is used for DIP Switch 1 */
  693.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
  694.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  695.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  696.     PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
  697.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  698.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  699.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
  700.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  701.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  702.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
  703.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  704.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  705.     PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
  706.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  707.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  708.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Cabinet ) )
  709.     PORT_DIPSETTING(    0x20, DEF_STR( Upright ) )
  710.     PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
  711.     PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Lives ) )
  712.     PORT_DIPSETTING(    0x00, "3" )
  713.     PORT_DIPSETTING(    0x40, "4" )
  714.     PORT_DIPSETTING(    0x80, "5" )
  715.     PORT_DIPSETTING(    0xc0, "6" )
  716.  
  717.     COINAGE
  718.  
  719. INPUT_PORTS_END
  720.  
  721.  
  722. INPUT_PORTS_START( monsterb )
  723.     PORT_START      /* IN0 */
  724.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  725.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 )
  726.     PORT_BIT_IMPULSE( 0x40, IP_ACTIVE_LOW, IPT_COIN2, 3 )
  727.     PORT_BIT_IMPULSE( 0x80, IP_ACTIVE_LOW, IPT_COIN1, 3 )
  728.  
  729.     PORT_START      /* IN1 */
  730.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
  731.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
  732.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  733.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  734.  
  735.     PORT_START      /* IN2 */
  736.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY )
  737.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_4WAY )
  738.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_4WAY )
  739.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  740.  
  741.     PORT_START      /* IN3 */
  742.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_4WAY )
  743.     PORT_BITX(0x20, IP_ACTIVE_LOW, IPT_BUTTON1, "Zap", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
  744.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  745.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  746.  
  747.     PORT_START      /* IN4 */
  748.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  749.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  750.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  751.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_4WAY | IPF_COCKTAIL )
  752.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_4WAY | IPF_COCKTAIL)
  753.     PORT_BITX(0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL, "Zap", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
  754.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_COCKTAIL)
  755.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_4WAY | IPF_COCKTAIL)
  756.  
  757.     PORT_START      /* FAKE */
  758.     /* This fake input port is used to get the status of the F2 key, */
  759.     /* and activate the test mode, which is triggered by a NMI */
  760.     PORT_BITX(0x01, IP_ACTIVE_HIGH, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
  761.  
  762.     PORT_START      /* FAKE */
  763.     /* This fake input port is used for DIP Switch 1 */
  764.     PORT_BITX( 0x01,    0x01, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Infinite Lives", IP_KEY_NONE, IP_JOY_NONE )
  765.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  766.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  767.     PORT_DIPNAME( 0x06, 0x02, DEF_STR( Bonus_Life ) )
  768.     PORT_DIPSETTING(    0x04, "10000" )
  769.     PORT_DIPSETTING(    0x02, "20000" )
  770.     PORT_DIPSETTING(    0x06, "40000" )
  771.     PORT_DIPSETTING(    0x00, "None" )
  772.     PORT_DIPNAME( 0x18, 0x08, DEF_STR( Difficulty ) )
  773.     PORT_DIPSETTING(    0x00, "Easy" )
  774.     PORT_DIPSETTING(    0x08, "Medium" )
  775.     PORT_DIPSETTING(    0x10, "Hard" )
  776.     PORT_DIPSETTING(    0x18, "Hardest" )
  777.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Cabinet ) )
  778.     PORT_DIPSETTING(    0x20, DEF_STR( Upright ) )
  779.     PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
  780.     PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Lives ) )
  781.     PORT_DIPSETTING(    0x00, "3" )
  782.     PORT_DIPSETTING(    0x40, "4" )
  783.     PORT_DIPSETTING(    0x80, "5" )
  784.     PORT_DIPSETTING(    0xc0, "6" )
  785.  
  786.     COINAGE
  787.  
  788. INPUT_PORTS_END
  789.  
  790. INPUT_PORTS_START( spaceod )
  791.     PORT_START      /* IN0 */
  792.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
  793.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 )
  794.     PORT_BIT_IMPULSE( 0x40, IP_ACTIVE_LOW, IPT_COIN2, 3 )
  795.     PORT_BIT_IMPULSE( 0x80, IP_ACTIVE_LOW, IPT_COIN1, 3 )
  796.  
  797.     PORT_START      /* IN1 */
  798.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
  799.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
  800.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  801.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  802.  
  803.     PORT_START      /* IN2 */
  804.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  805.     PORT_BITX(0x20, IP_ACTIVE_LOW, IPT_BUTTON2, "Bomb", IP_KEY_DEFAULT, IP_JOY_DEFAULT )
  806.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  807.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  808.  
  809.     PORT_START      /* IN3 */
  810.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  811.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
  812.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  813.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  814.  
  815.     PORT_START      /* IN4 */
  816.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  817.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_8WAY )
  818.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_8WAY )
  819.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
  820.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  821.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 )
  822.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_COCKTAIL)
  823.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_COCKTAIL)
  824.  
  825.     PORT_START      /* FAKE */
  826.     /* This fake input port is used to get the status of the F2 key, */
  827.     /* and activate the test mode, which is triggered by a NMI */
  828.     PORT_BITX(0x01, IP_ACTIVE_HIGH, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
  829.  
  830.     PORT_START      /* FAKE */
  831.     /* This fake input port is used for DIP Switch 1 */
  832.     PORT_BITX( 0x01,    0x01, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Infinite Lives", IP_KEY_NONE, IP_JOY_NONE )
  833.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  834.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  835.     PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
  836.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  837.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  838.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
  839.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  840.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  841.     PORT_DIPNAME( 0x18, 0x00, DEF_STR( Bonus_Life ) )
  842.     PORT_DIPSETTING(    0x00, "20000" )
  843.     PORT_DIPSETTING(    0x08, "40000" )
  844.     PORT_DIPSETTING(    0x10, "60000" )
  845.     PORT_DIPSETTING(    0x18, "80000" )
  846.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Cabinet ) )
  847.     PORT_DIPSETTING(    0x20, DEF_STR( Upright ) )
  848.     PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
  849.     PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Lives ) )
  850.     PORT_DIPSETTING(    0x00, "3" )
  851.     PORT_DIPSETTING(    0x40, "4" )
  852.     PORT_DIPSETTING(    0x80, "5" )
  853.     PORT_DIPSETTING(    0xc0, "6" )
  854.  
  855.     COINAGE
  856.  
  857. INPUT_PORTS_END
  858.  
  859.  
  860. INPUT_PORTS_START( pignewt )
  861.     PORT_START      /* IN0 */
  862.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  863.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 )
  864.     PORT_BIT_IMPULSE( 0x40, IP_ACTIVE_LOW, IPT_COIN2, 3 )
  865.     PORT_BIT_IMPULSE( 0x80, IP_ACTIVE_LOW, IPT_COIN1, 3 )
  866.  
  867.     PORT_START      /* IN1 */
  868.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
  869.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
  870.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  871.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  872.  
  873.     PORT_START      /* IN2 */
  874.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY )
  875.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_4WAY )
  876.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_4WAY )
  877.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  878.  
  879.     PORT_START      /* IN3 */
  880.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_4WAY )
  881.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
  882.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  883.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  884.  
  885.     PORT_START      /* IN4 */
  886.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  887.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  888.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  889.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_4WAY | IPF_COCKTAIL )
  890.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_4WAY | IPF_COCKTAIL)
  891.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL)
  892.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_COCKTAIL)
  893.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_4WAY | IPF_COCKTAIL)
  894.  
  895.     PORT_START      /* FAKE */
  896.     /* This fake input port is used to get the status of the F2 key, */
  897.     /* and activate the test mode, which is triggered by a NMI */
  898.     PORT_BITX(0x01, IP_ACTIVE_HIGH, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
  899.  
  900.     PORT_START      /* FAKE */
  901.     /* This fake input port is used for DIP Switch 1 */
  902.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
  903.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  904.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  905.     PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
  906.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  907.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  908.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
  909.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  910.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  911.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
  912.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  913.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  914.     PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )
  915.     PORT_DIPSETTING(    0x00, "3" )
  916.     PORT_DIPSETTING(    0x10, "4" )
  917.     PORT_DIPSETTING(    0x20, "5" )
  918.     PORT_DIPSETTING(    0x30, "6" )
  919.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
  920.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  921.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  922.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
  923.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  924.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  925.  
  926.     COINAGE
  927.  
  928. INPUT_PORTS_END
  929.  
  930.  
  931. INPUT_PORTS_START( pignewta )
  932.     PORT_START      /* IN0 */
  933.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  934.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 )
  935.     PORT_BIT_IMPULSE( 0x40, IP_ACTIVE_LOW, IPT_COIN2, 3 )
  936.     PORT_BIT_IMPULSE( 0x80, IP_ACTIVE_LOW, IPT_COIN1, 3 )
  937.  
  938.     PORT_START      /* IN1 */
  939.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
  940.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
  941.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  942.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  943.  
  944.     PORT_START      /* IN2 */
  945.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  946.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  947.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  948.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  949.  
  950.     PORT_START      /* IN3 */
  951.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  952.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  953.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  954.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  955.  
  956.     PORT_START      /* IN4 */
  957.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  958.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_4WAY )
  959.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_4WAY )
  960.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_4WAY )
  961.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_4WAY )
  962.  
  963.     PORT_START      /* FAKE */
  964.     /* This fake input port is used to get the status of the F2 key, */
  965.     /* and activate the test mode, which is triggered by a NMI */
  966.     PORT_BITX(0x01, IP_ACTIVE_HIGH, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
  967.  
  968.     PORT_START      /* FAKE */
  969.     /* This fake input port is used for DIP Switch 1 */
  970.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
  971.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  972.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  973.     PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
  974.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  975.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  976.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
  977.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  978.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  979.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
  980.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  981.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  982.     PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )
  983.     PORT_DIPSETTING(    0x00, "3" )
  984.     PORT_DIPSETTING(    0x10, "4" )
  985.     PORT_DIPSETTING(    0x20, "5" )
  986.     PORT_DIPSETTING(    0x30, "6" )
  987.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
  988.     PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
  989.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  990.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
  991.     PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
  992.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  993.  
  994.     COINAGE
  995.  
  996. INPUT_PORTS_END
  997.  
  998.  
  999.  
  1000. INPUT_PORTS_START( sindbadm )
  1001.     PORT_START      /* IN0 */
  1002.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1003.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 )
  1004.     PORT_BIT_IMPULSE( 0x40, IP_ACTIVE_LOW, IPT_COIN2, 3 )
  1005.     PORT_BIT_IMPULSE( 0x80, IP_ACTIVE_LOW, IPT_COIN1, 3 )
  1006.  
  1007.     PORT_START      /* IN1 */
  1008.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 )
  1009.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
  1010.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1011.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1012.  
  1013.     PORT_START      /* IN2 */
  1014.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY )
  1015.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_4WAY )
  1016.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_4WAY )
  1017.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1018.  
  1019.     PORT_START      /* IN3 */
  1020.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_4WAY )
  1021.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
  1022.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1023.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1024.  
  1025.     PORT_START      /* IN4 */
  1026.     PORT_BIT( 0xFF, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  1027.  
  1028.     PORT_START      /* FAKE */
  1029.     /* This fake input port is used to get the status of the F2 key, */
  1030.     /* and activate the test mode, which is triggered by a NMI */
  1031.     PORT_BITX(0x01, IP_ACTIVE_HIGH, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
  1032.  
  1033.     PORT_START      /* FAKE */
  1034.     /* This fake input port is used for DIP Switch 1 */
  1035.     PORT_BITX( 0x01,    0x01, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Infinite Lives", IP_KEY_NONE, IP_JOY_NONE )
  1036.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  1037.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1038.     PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
  1039.     PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
  1040.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1041.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
  1042.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  1043.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1044.     PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
  1045.     PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
  1046.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1047.     PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
  1048.     PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
  1049.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  1050.     PORT_DIPNAME( 0x20, 0x20, DEF_STR( Cabinet ) )
  1051.     PORT_DIPSETTING(    0x20, DEF_STR( Upright ) )
  1052.     PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
  1053.     PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Lives ) )
  1054.     PORT_DIPSETTING(    0x00, "3" )
  1055.     PORT_DIPSETTING(    0x40, "4" )
  1056.     PORT_DIPSETTING(    0x80, "5" )
  1057.     PORT_DIPSETTING(    0xc0, "6" )
  1058.  
  1059.     PORT_START      /* FAKE */
  1060.     /* This fake input port is used for DIP Switch 2 */
  1061.     PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) )
  1062.     PORT_DIPSETTING(    0x07, DEF_STR( 4C_1C ) )
  1063.     PORT_DIPSETTING(    0x08, DEF_STR( 3C_1C ) )
  1064.     PORT_DIPSETTING(    0x09, DEF_STR( 2C_1C ) )
  1065.     PORT_DIPSETTING(    0x05, "2 Coins/1 Credit 5/3" )
  1066.     PORT_DIPSETTING(    0x04, "2 Coins/1 Credit 4/3" )
  1067.     PORT_DIPSETTING(    0x0f, DEF_STR( 1C_1C ) )
  1068.     PORT_DIPSETTING(    0x01, "1 Coin/1 Credit 2/3" )
  1069.     PORT_DIPSETTING(    0x02, "1 Coin/1 Credit 4/5" )
  1070.     PORT_DIPSETTING(    0x03, "1 Coin/1 Credit 5/6" )
  1071.     PORT_DIPSETTING(    0x06, DEF_STR( 2C_3C ) )
  1072.     PORT_DIPSETTING(    0x0e, DEF_STR( 1C_2C ) )
  1073.     PORT_DIPSETTING(    0x00, "1 Coin/2 Credits 5/11" )
  1074.     PORT_DIPSETTING(    0x0d, DEF_STR( 1C_3C ) )
  1075.     PORT_DIPSETTING(    0x0c, DEF_STR( 1C_4C ) )
  1076.     PORT_DIPSETTING(    0x0b, DEF_STR( 1C_5C ) )
  1077.     PORT_DIPSETTING(    0x0a, DEF_STR( 1C_6C ) )
  1078.  
  1079.     PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_B ) )
  1080.     PORT_DIPSETTING(    0x70, DEF_STR( 4C_1C ) )
  1081.     PORT_DIPSETTING(    0x80, DEF_STR( 3C_1C ) )
  1082.     PORT_DIPSETTING(    0x90, DEF_STR( 2C_1C ) )
  1083.     PORT_DIPSETTING(    0x50, "2 Coins/1 Credit 5/3" )
  1084.     PORT_DIPSETTING(    0x40, "2 Coins/1 Credit 4/3" )
  1085.     PORT_DIPSETTING(    0xf0, DEF_STR( 1C_1C ) )
  1086.     PORT_DIPSETTING(    0x10, "1 Coin/1 Credit 2/3" )
  1087.     PORT_DIPSETTING(    0x20, "1 Coin/1 Credit 4/5" )
  1088.     PORT_DIPSETTING(    0x30, "1 Coin/1 Credit 5/6" )
  1089.     PORT_DIPSETTING(    0x60, DEF_STR( 2C_3C ) )
  1090.     PORT_DIPSETTING(    0xe0, DEF_STR( 1C_2C ) )
  1091.     PORT_DIPSETTING(    0x00, "1 Coin/2 Credits 5/11" )
  1092.     PORT_DIPSETTING(    0xd0, DEF_STR( 1C_3C ) )
  1093.     PORT_DIPSETTING(    0xc0, DEF_STR( 1C_4C ) )
  1094.     PORT_DIPSETTING(    0xb0, DEF_STR( 1C_5C ) )
  1095.     PORT_DIPSETTING(    0xa0, DEF_STR( 1C_6C ) )
  1096.  
  1097.     PORT_START      /* IN8 */
  1098.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_4WAY | IPF_COCKTAIL)
  1099.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_4WAY | IPF_COCKTAIL)
  1100.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL)
  1101.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_4WAY | IPF_COCKTAIL )
  1102.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_4WAY | IPF_COCKTAIL)
  1103.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1104.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1105.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
  1106.  
  1107. INPUT_PORTS_END
  1108.  
  1109.  
  1110.  
  1111. static struct GfxLayout charlayout =
  1112. {
  1113.     8,8,    /* 8*8 characters */
  1114.     256,    /* 256 characters? */
  1115.     2,      /* 2 bits per pixel */
  1116.     { 0x1000*8, 0 },    /* separated by 0x1000 bytes */
  1117.     { 0, 1, 2, 3, 4, 5, 6, 7 },     /* pretty straightforward layout */
  1118.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
  1119.     8*8     /* every char takes 8 consecutive bytes */
  1120. };
  1121.  
  1122. static struct GfxLayout backlayout =
  1123. {
  1124.     8,8,    /* 8*8 characters */
  1125.     256,  /* 256 characters per scene, 4 scenes */
  1126.     2,      /* 2 bits per pixel */
  1127.     { 0x2000*8, 0 },    /* separated by 0x2000 bytes */
  1128.     { 0, 1, 2, 3, 4, 5, 6, 7 },     /* pretty straightforward layout */
  1129.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
  1130.     8*8     /* every char takes 8 consecutive bytes */
  1131. };
  1132.  
  1133. static struct GfxLayout spaceod_layout =
  1134. {
  1135.     8,8,   /* 16*8 characters */
  1136.     256,    /* 256 characters */
  1137.     6,      /* 6 bits per pixel */
  1138.     { 0, 0x1000*8, 0x2000*8, 0x3000*8, 0x4000*8, 0x5000*8 },    /* separated by 0x1000 bytes (1 EPROM per bit) */
  1139.     { 0, 1, 2, 3, 4, 5, 6, 7 },     /* pretty straightforward layout */
  1140.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
  1141.     8*8     /* every char takes 16 consecutive bytes */
  1142. };
  1143.  
  1144.  
  1145. static struct GfxDecodeInfo gfxdecodeinfo[] =
  1146. {
  1147.     { REGION_CPU1, 0xe800, &charlayout, 0x01, 0x10 },
  1148.     { -1 } /* end of array */
  1149. };
  1150.  
  1151. static struct GfxDecodeInfo monsterb_gfxdecodeinfo[] =
  1152. {
  1153.     { REGION_CPU1, 0xe800, &charlayout, 0x01, 0x10 },
  1154.     { REGION_GFX1, 0x0000, &backlayout, 0x41, 0x10 },
  1155.     { REGION_GFX1, 0x0800, &backlayout, 0x41, 0x10 },
  1156.     { REGION_GFX1, 0x1000, &backlayout, 0x41, 0x10 },
  1157.     { REGION_GFX1, 0x1800, &backlayout, 0x41, 0x10 },
  1158.     { -1 } /* end of array */
  1159. };
  1160.  
  1161. static struct GfxDecodeInfo spaceod_gfxdecodeinfo[] =
  1162. {
  1163.     { REGION_CPU1, 0xe800, &charlayout,     0x01, 0x10 },
  1164.     { REGION_GFX1, 0x0000, &spaceod_layout, 0x41, 1 },
  1165.     { REGION_GFX1, 0x0800, &spaceod_layout, 0x41, 1 },
  1166.     { -1 } /* end of array */
  1167. };
  1168.  
  1169.  
  1170.  
  1171. static struct Samplesinterface astrob_samples_interface =
  1172. {
  1173.     12,    /* 12 channels */
  1174.     25,    /* volume */
  1175.     astrob_sample_names
  1176. };
  1177.  
  1178. /* TODO: someday this will become a speech synthesis interface */
  1179. static struct CustomSound_interface astrob_custom_interface =
  1180. {
  1181.     astrob_speech_sh_start,
  1182.     0,
  1183.     astrob_speech_sh_update
  1184. };
  1185.  
  1186. static struct MachineDriver machine_driver_astrob =
  1187. {
  1188.     /* basic machine hardware */
  1189.     {
  1190.         {
  1191.             CPU_Z80,
  1192.             3867120,    /* 3.86712 Mhz ??? */
  1193.             readmem,writemem,readport,astrob_writeport,
  1194.             segar_interrupt,1
  1195.         },
  1196.         {
  1197.             CPU_I8035 | CPU_AUDIO_CPU,
  1198.             3120000/15,    /* 3.12Mhz crystal ??? */
  1199.             speech_readmem,speech_writemem,speech_readport,speech_writeport,
  1200.             ignore_interrupt,1
  1201.         }
  1202.     },
  1203.     60, DEFAULT_60HZ_VBLANK_DURATION,       /* frames per second, vblank duration */
  1204.     1,
  1205.     0,
  1206.  
  1207.     /* video hardware */
  1208.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  1209.     gfxdecodeinfo,
  1210.     16*4+1,16*4+1,      // 16 2-bit colors + 1 transparent black
  1211.     segar_init_colors,
  1212.  
  1213.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
  1214.     0,
  1215.     segar_vh_start,
  1216.     generic_vh_stop,
  1217.     segar_vh_screenrefresh,
  1218.  
  1219.     /* sound hardware */
  1220.     0,0,0,0,
  1221.     {
  1222.         {
  1223.             SOUND_CUSTOM,
  1224.             &astrob_custom_interface
  1225.         },
  1226.         {
  1227.             SOUND_SAMPLES,
  1228.             &astrob_samples_interface
  1229.         }
  1230.     }
  1231. };
  1232.  
  1233. static struct Samplesinterface spaceod_samples_interface =
  1234. {
  1235.     12,    /* 12 channels */
  1236.     25,    /* volume */
  1237.     spaceod_sample_names
  1238. };
  1239.  
  1240. static struct MachineDriver machine_driver_spaceod =
  1241. {
  1242.     /* basic machine hardware */
  1243.     {
  1244.         {
  1245.             CPU_Z80,
  1246.             3867120,    /* 3.86712 Mhz ??? */
  1247.             readmem,writemem,readport,spaceod_writeport,
  1248.             segar_interrupt,1
  1249.         }
  1250.     },
  1251.     60, DEFAULT_60HZ_VBLANK_DURATION,       /* frames per second, vblank duration */
  1252.     1,
  1253.     0,
  1254.  
  1255.     /* video hardware */
  1256.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  1257.     spaceod_gfxdecodeinfo,
  1258.     16*4*2+1,16*4*2+1,          // 16 2-bit colors for foreground, 1 6-bit color for background
  1259.     segar_init_colors,
  1260.  
  1261.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
  1262.     0,
  1263.     spaceod_vh_start,
  1264.     spaceod_vh_stop,
  1265.     spaceod_vh_screenrefresh,
  1266.  
  1267.     /* sound hardware */
  1268.     0,0,0,0,
  1269.     {
  1270.         {
  1271.             SOUND_SAMPLES,
  1272.             &spaceod_samples_interface
  1273.         }
  1274.     }
  1275. };
  1276.  
  1277. static struct Samplesinterface samples_interface_005 =
  1278. {
  1279.     12,    /* 12 channels */
  1280.     25,    /* volume */
  1281.     s005_sample_names
  1282. };
  1283.  
  1284. static struct MachineDriver machine_driver_005 =
  1285. {
  1286.     /* basic machine hardware */
  1287.     {
  1288.         {
  1289.             CPU_Z80,
  1290.             3867120,    /* 3.86712 Mhz ??? */
  1291.             readmem,writemem,readport,writeport_005,
  1292.             segar_interrupt,1
  1293.         }
  1294.     },
  1295.     60, DEFAULT_60HZ_VBLANK_DURATION,       /* frames per second, vblank duration */
  1296.     1,
  1297.     0,
  1298.  
  1299.     /* video hardware */
  1300.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  1301.     gfxdecodeinfo,
  1302.     16*4+1,16*4+1,      // 16 2-bit colors for foreground and background
  1303.     segar_init_colors,
  1304.  
  1305.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
  1306.     0,
  1307.     segar_vh_start,
  1308.     generic_vh_stop,
  1309.     segar_vh_screenrefresh,
  1310.  
  1311.     /* sound hardware */
  1312.     0,0,0,0,
  1313.     {
  1314.         {
  1315.             SOUND_SAMPLES,
  1316.             &samples_interface_005
  1317.         }
  1318.     }
  1319. };
  1320.  
  1321. static struct Samplesinterface monsterb_samples_interface =
  1322. {
  1323.     2,    /* 2 channels */
  1324.     25,    /* volume */
  1325.     monsterb_sample_names
  1326. };
  1327.  
  1328. static struct DACinterface monsterb_dac_interface =
  1329. {
  1330.     1,
  1331.     { 100 }
  1332. };
  1333.  
  1334. static struct TMS36XXinterface monsterb_tms3617_interface =
  1335. {
  1336.     1,
  1337.     { 50 },         /* mixing levels */
  1338.     { TMS3617 },    /* TMS36xx subtype(s) */
  1339.     { 247 },        /* base clock (one octave below A) */
  1340.     { {0.5,0.5,0.5,0.5,0.5,0.5} }  /* decay times of voices */
  1341. };
  1342.  
  1343. static struct MachineDriver machine_driver_monsterb =
  1344. {
  1345.     /* basic machine hardware */
  1346.     {
  1347.         {
  1348.             CPU_Z80,
  1349.             3867120,    /* 3.86712 Mhz ??? */
  1350.             readmem,writemem,readport,monsterb_writeport,
  1351.             segar_interrupt,1
  1352.         },
  1353.         {
  1354.             CPU_N7751 | CPU_AUDIO_CPU,
  1355.             6000000/15,    /* 6Mhz crystal */
  1356.             monsterb_7751_readmem,monsterb_7751_writemem,monsterb_7751_readport,monsterb_7751_writeport,
  1357.             ignore_interrupt,1
  1358.         }
  1359.     },
  1360.     60, DEFAULT_60HZ_VBLANK_DURATION,       /* frames per second, vblank duration */
  1361.     1,
  1362.     0,
  1363.  
  1364.     /* video hardware */
  1365.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  1366.     monsterb_gfxdecodeinfo,
  1367.     16*4*2+1,16*4*2+1,          // 16 2-bit colors for foreground and background
  1368.     segar_init_colors,
  1369.  
  1370.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
  1371.     0,
  1372.     monsterb_vh_start,
  1373.     generic_vh_stop,
  1374.     monsterb_vh_screenrefresh,
  1375.  
  1376.     /* sound hardware */
  1377.     0,0,0,0,
  1378.     {
  1379.         {
  1380.             SOUND_TMS36XX,
  1381.             &monsterb_tms3617_interface
  1382.         },
  1383.         {
  1384.             SOUND_SAMPLES,
  1385.             &monsterb_samples_interface
  1386.         },
  1387.         {
  1388.             SOUND_DAC,
  1389.             &monsterb_dac_interface
  1390.         }
  1391.     }
  1392. };
  1393.  
  1394. static struct MachineDriver machine_driver_pignewt =
  1395. {
  1396.     /* basic machine hardware */
  1397.     {
  1398.         {
  1399.             CPU_Z80,
  1400.             3867120,    /* 3.86712 Mhz ??? */
  1401.             readmem,writemem,readport,pignewt_writeport,
  1402.             segar_interrupt,1
  1403.         }
  1404.     },
  1405.     60, DEFAULT_60HZ_VBLANK_DURATION,       /* frames per second, vblank duration */
  1406.     1,
  1407.     0,
  1408.  
  1409.     /* video hardware */
  1410.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  1411.     monsterb_gfxdecodeinfo,
  1412.     16*4*2+1,16*4*2+1,          // 16 2-bit colors for foreground and background
  1413.     segar_init_colors,
  1414.  
  1415.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
  1416.     0,
  1417.     monsterb_vh_start,
  1418.     generic_vh_stop,
  1419.     sindbadm_vh_screenrefresh,
  1420.  
  1421.     /* sound hardware */
  1422.     0,0,0,0
  1423. };
  1424.  
  1425.  
  1426. static struct SN76496interface sn76496_interface =
  1427. {
  1428.     2,          /* 2 chips */
  1429.     { 4000000, 2000000 },    /* I'm assuming that the sound board is the same as System 1 */
  1430.     { 100, 100 }
  1431. };
  1432.  
  1433. static struct MachineDriver machine_driver_sindbadm =
  1434. {
  1435.     /* basic machine hardware */
  1436.     {
  1437.         {
  1438.             CPU_Z80,
  1439.             3072000,    /* 3.072 Mhz ? */
  1440.             sindbadm_readmem,sindbadm_writemem,readport,sindbadm_writeport,
  1441.             segar_interrupt,1
  1442.         },
  1443.         {
  1444.             CPU_Z80 | CPU_AUDIO_CPU,
  1445.             4000000,    /* 4 Mhz ? - see system1.c */
  1446.             sindbadm_sound_readmem,sindbadm_sound_writemem,0,0,
  1447.             interrupt,4             /* NMIs are caused by the main CPU */
  1448.         }
  1449.     },
  1450.     60, DEFAULT_60HZ_VBLANK_DURATION,       /* frames per second, vblank duration */
  1451.     1,      /* 1 CPU slice per frame - interleaving is forced when a sound command is written */
  1452.     0,
  1453.  
  1454.     /* video hardware */
  1455.     32*8, 32*8, { 0*8, 32*8-1, 0*8, 28*8-1 },
  1456.     monsterb_gfxdecodeinfo,
  1457.     16*4*2+1,16*4*2+1,          // 16 2-bit colors for foreground and background
  1458.     segar_init_colors,
  1459.  
  1460.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE,
  1461.     0,
  1462.     monsterb_vh_start,
  1463.     generic_vh_stop,
  1464.     sindbadm_vh_screenrefresh,
  1465.  
  1466.     /* sound hardware */
  1467.     0,0,0,0,
  1468.     {
  1469.         {
  1470.             SOUND_SN76496,
  1471.             &sn76496_interface
  1472.         }
  1473.     }
  1474. };
  1475.  
  1476.  
  1477.  
  1478.  
  1479.  
  1480. ROM_START( astrob )
  1481.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  1482.     ROM_LOAD( "829b",      0x0000, 0x0800, 0x14ae953c ) /* U25 */
  1483.     ROM_LOAD( "907a",     0x0800, 0x0800, 0xa9aaaf38 ) /* U1 */
  1484.     ROM_LOAD( "908a",     0x1000, 0x0800, 0x897f2b87 ) /* U2 */
  1485.     ROM_LOAD( "909a",     0x1800, 0x0800, 0x55a339e6 ) /* U3 */
  1486.     ROM_LOAD( "910a",     0x2000, 0x0800, 0x7972b60a ) /* U4 */
  1487.     ROM_LOAD( "911a",     0x2800, 0x0800, 0xaf87520f ) /* U5 */
  1488.     ROM_LOAD( "912a",     0x3000, 0x0800, 0xb656f929 ) /* U6 */
  1489.     ROM_LOAD( "913a",     0x3800, 0x0800, 0x321074b3 ) /* U7 */
  1490.     ROM_LOAD( "914a",     0x4000, 0x0800, 0x90d2493e ) /* U8 */
  1491.     ROM_LOAD( "915a",     0x4800, 0x0800, 0xaaf828d1 ) /* U9 */
  1492.     ROM_LOAD( "916a",     0x5000, 0x0800, 0x56d92ab9 ) /* U10 */
  1493.     ROM_LOAD( "917a",     0x5800, 0x0800, 0x9dcdaf2d ) /* U11 */
  1494.     ROM_LOAD( "918a",     0x6000, 0x0800, 0xc9d09655 ) /* U12 */
  1495.     ROM_LOAD( "919a",     0x6800, 0x0800, 0x448bd318 ) /* U13 */
  1496.     ROM_LOAD( "920a",     0x7000, 0x0800, 0x3524a383 ) /* U14 */
  1497.     ROM_LOAD( "921a",     0x7800, 0x0800, 0x98c14834 ) /* U15 */
  1498.     ROM_LOAD( "922a",     0x8000, 0x0800, 0x4311513c ) /* U16 */
  1499.     ROM_LOAD( "923a",     0x8800, 0x0800, 0x50f0462c ) /* U17 */
  1500.     ROM_LOAD( "924a",     0x9000, 0x0800, 0x120a39c7 ) /* U18 */
  1501.     ROM_LOAD( "925a",     0x9800, 0x0800, 0x790a7f4e ) /* U19 */
  1502.  
  1503.     ROM_REGION( 0x10000, REGION_CPU2 )     /* 64k for speech code */
  1504.     ROM_LOAD( "808b",     0x0000, 0x0800, 0x5988c767 ) /* U7 */
  1505.     ROM_LOAD( "809a",     0x0800, 0x0800, 0x893f228d ) /* U6 */
  1506.     ROM_LOAD( "810",      0x1000, 0x0800, 0xff0163c5 ) /* U5 */
  1507.     ROM_LOAD( "811",      0x1800, 0x0800, 0x219f3978 ) /* U4 */
  1508.     ROM_LOAD( "812a",     0x2000, 0x0800, 0x410ad0d2 ) /* U3 */
  1509. ROM_END
  1510.  
  1511. ROM_START( astrob2 )
  1512.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  1513.     ROM_LOAD( "829b",     0x0000, 0x0800, 0x14ae953c ) /* U25 */
  1514.     ROM_LOAD( "888",      0x0800, 0x0800, 0x42601744 ) /* U1 */
  1515.     ROM_LOAD( "889",      0x1000, 0x0800, 0xdd9ab173 ) /* U2 */
  1516.     ROM_LOAD( "890",      0x1800, 0x0800, 0x26f5b4cf ) /* U3 */
  1517.     ROM_LOAD( "891",      0x2000, 0x0800, 0x6437c95f ) /* U4 */
  1518.     ROM_LOAD( "892",      0x2800, 0x0800, 0x2d3c949b ) /* U5 */
  1519.     ROM_LOAD( "893",      0x3000, 0x0800, 0xccdb1a76 ) /* U6 */
  1520.     ROM_LOAD( "894",      0x3800, 0x0800, 0x66ae5ced ) /* U7 */
  1521.     ROM_LOAD( "895",      0x4000, 0x0800, 0x202cf3a3 ) /* U8 */
  1522.     ROM_LOAD( "896",      0x4800, 0x0800, 0xb603fe23 ) /* U9 */
  1523.     ROM_LOAD( "897",      0x5000, 0x0800, 0x989198c6 ) /* U10 */
  1524.     ROM_LOAD( "898",      0x5800, 0x0800, 0xef2bab04 ) /* U11 */
  1525.     ROM_LOAD( "899",      0x6000, 0x0800, 0xe0d189ee ) /* U12 */
  1526.     ROM_LOAD( "900",      0x6800, 0x0800, 0x682d4604 ) /* U13 */
  1527.     ROM_LOAD( "901",      0x7000, 0x0800, 0x9ed11c61 ) /* U14 */
  1528.     ROM_LOAD( "902",      0x7800, 0x0800, 0xb4d6c330 ) /* U15 */
  1529.     ROM_LOAD( "903",      0x8000, 0x0800, 0x84acc38c ) /* U16 */
  1530.     ROM_LOAD( "904",      0x8800, 0x0800, 0x5eba3097 ) /* U17 */
  1531.     ROM_LOAD( "905",      0x9000, 0x0800, 0x4f08f9f4 ) /* U18 */
  1532.     ROM_LOAD( "906",      0x9800, 0x0800, 0x58149df1 ) /* U19 */
  1533.  
  1534.     ROM_REGION( 0x10000, REGION_CPU2 )     /* 64k for speech code */
  1535.     ROM_LOAD( "808b",     0x0000, 0x0800, 0x5988c767 ) /* U7 */
  1536.     ROM_LOAD( "809a",     0x0800, 0x0800, 0x893f228d ) /* U6 */
  1537.     ROM_LOAD( "810",      0x1000, 0x0800, 0xff0163c5 ) /* U5 */
  1538.     ROM_LOAD( "811",      0x1800, 0x0800, 0x219f3978 ) /* U4 */
  1539.     ROM_LOAD( "812a",     0x2000, 0x0800, 0x410ad0d2 ) /* U3 */
  1540. ROM_END
  1541.  
  1542. ROM_START( astrob1 )
  1543.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  1544.     ROM_LOAD( "829",      0x0000, 0x0800, 0x5f66046e ) /* U25 */
  1545.     ROM_LOAD( "837",      0x0800, 0x0800, 0xce9c3763 ) /* U1 */
  1546.     ROM_LOAD( "838",      0x1000, 0x0800, 0x3557289e ) /* U2 */
  1547.     ROM_LOAD( "839",      0x1800, 0x0800, 0xc88bda24 ) /* U3 */
  1548.     ROM_LOAD( "840",      0x2000, 0x0800, 0x24c9fe23 ) /* U4 */
  1549.     ROM_LOAD( "841",      0x2800, 0x0800, 0xf153c683 ) /* U5 */
  1550.     ROM_LOAD( "842",      0x3000, 0x0800, 0x4c5452b2 ) /* U6 */
  1551.     ROM_LOAD( "843",      0x3800, 0x0800, 0x673161a6 ) /* U7 */
  1552.     ROM_LOAD( "844",      0x4000, 0x0800, 0x6bfc59fd ) /* U8 */
  1553.     ROM_LOAD( "845",      0x4800, 0x0800, 0x018623f3 ) /* U9 */
  1554.     ROM_LOAD( "846",      0x5000, 0x0800, 0x4d7c5fb3 ) /* U10 */
  1555.     ROM_LOAD( "847",      0x5800, 0x0800, 0x24d1d50a ) /* U11 */
  1556.     ROM_LOAD( "848",      0x6000, 0x0800, 0x1c145541 ) /* U12 */
  1557.     ROM_LOAD( "849",      0x6800, 0x0800, 0xd378c169 ) /* U13 */
  1558.     ROM_LOAD( "850",      0x7000, 0x0800, 0x9da673ae ) /* U14 */
  1559.     ROM_LOAD( "851",      0x7800, 0x0800, 0x3d4cf9f0 ) /* U15 */
  1560.     ROM_LOAD( "852",      0x8000, 0x0800, 0xaf88a97e ) /* U16 */
  1561.  
  1562.     ROM_REGION( 0x10000, REGION_CPU2 )     /* 64k for speech code */
  1563.     ROM_LOAD( "808b",     0x0000, 0x0800, 0x5988c767 ) /* U7 */
  1564.     ROM_LOAD( "809a",     0x0800, 0x0800, 0x893f228d ) /* U6 */
  1565.     ROM_LOAD( "810",      0x1000, 0x0800, 0xff0163c5 ) /* U5 */
  1566.     ROM_LOAD( "811",      0x1800, 0x0800, 0x219f3978 ) /* U4 */
  1567.     ROM_LOAD( "812a",     0x2000, 0x0800, 0x410ad0d2 ) /* U3 */
  1568. ROM_END
  1569.  
  1570. ROM_START( 005 )
  1571.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  1572.     ROM_LOAD( "1346b.u25",    0x0000, 0x0800, 0x8e68533e ) /* U25 */
  1573.     ROM_LOAD( "5092.u1",      0x0800, 0x0800, 0x29e10a81 ) /* U1 */
  1574.     ROM_LOAD( "5093.u2",      0x1000, 0x0800, 0xe1edc3df ) /* U2 */
  1575.     ROM_LOAD( "5094.u3",      0x1800, 0x0800, 0x995773bb ) /* U3 */
  1576.     ROM_LOAD( "5095.u4",      0x2000, 0x0800, 0xf887f575 ) /* U4 */
  1577.     ROM_LOAD( "5096.u5",      0x2800, 0x0800, 0x5545241e ) /* U5 */
  1578.     ROM_LOAD( "5097.u6",      0x3000, 0x0800, 0x428edb54 ) /* U6 */
  1579.     ROM_LOAD( "5098.u7",      0x3800, 0x0800, 0x5bcb9d63 ) /* U7 */
  1580.     ROM_LOAD( "5099.u8",      0x4000, 0x0800, 0x0ea24ba3 ) /* U8 */
  1581.     ROM_LOAD( "5100.u9",      0x4800, 0x0800, 0xa79af131 ) /* U9 */
  1582.     ROM_LOAD( "5101.u10",     0x5000, 0x0800, 0x8a1cdae0 ) /* U10 */
  1583.     ROM_LOAD( "5102.u11",     0x5800, 0x0800, 0x70826a15 ) /* U11 */
  1584.     ROM_LOAD( "5103.u12",     0x6000, 0x0800, 0x7f80c5b0 ) /* U12 */
  1585.     ROM_LOAD( "5104.u13",     0x6800, 0x0800, 0x0140930e ) /* U13 */
  1586.     ROM_LOAD( "5105.u14",     0x7000, 0x0800, 0x17807a05 ) /* U14 */
  1587.     ROM_LOAD( "5106.u15",     0x7800, 0x0800, 0xc7cdfa9d ) /* U15 */
  1588.     ROM_LOAD( "5107.u16",     0x8000, 0x0800, 0x95f8a2e6 ) /* U16 */
  1589.     ROM_LOAD( "5108.u17",     0x8800, 0x0800, 0xd371cacd ) /* U17 */
  1590.     ROM_LOAD( "5109.u18",     0x9000, 0x0800, 0x48a20617 ) /* U18 */
  1591.     ROM_LOAD( "5110.u19",     0x9800, 0x0800, 0x7d26111a ) /* U19 */
  1592.     ROM_LOAD( "5111.u20",     0xa000, 0x0800, 0xa888e175 ) /* U20 */
  1593.  
  1594.     ROM_REGION( 0x0800, REGION_SOUND1 )      /* 2k for sound */
  1595.     ROM_LOAD( "epr-1286.16",  0x0000, 0x0800, 0xfbe0d501 )
  1596. ROM_END
  1597.  
  1598. ROM_START( monsterb )
  1599.     ROM_REGION( 0x14000, REGION_CPU1 )     /* 64k for code + space for background */
  1600.     ROM_LOAD( "1778cpu.bin",  0x0000, 0x0800, 0x19761be3 ) /* U25 */
  1601.     ROM_LOAD( "1779.bin",     0x0800, 0x0800, 0x5b67dc4c ) /* U1 */
  1602.     ROM_LOAD( "1780.bin",     0x1000, 0x0800, 0xfac5aac6 ) /* U2 */
  1603.     ROM_LOAD( "1781.bin",     0x1800, 0x0800, 0x3b104103 ) /* U3 */
  1604.     ROM_LOAD( "1782.bin",     0x2000, 0x0800, 0xc1523553 ) /* U4 */
  1605.     ROM_LOAD( "1783.bin",     0x2800, 0x0800, 0xe0ea08c5 ) /* U5 */
  1606.     ROM_LOAD( "1784.bin",     0x3000, 0x0800, 0x48976d11 ) /* U6 */
  1607.     ROM_LOAD( "1785.bin",     0x3800, 0x0800, 0x297d33ae ) /* U7 */
  1608.     ROM_LOAD( "1786.bin",     0x4000, 0x0800, 0xef94c8f4 ) /* U8 */
  1609.     ROM_LOAD( "1787.bin",     0x4800, 0x0800, 0x1b62994e ) /* U9 */
  1610.     ROM_LOAD( "1788.bin",     0x5000, 0x0800, 0xa2e32d91 ) /* U10 */
  1611.     ROM_LOAD( "1789.bin",     0x5800, 0x0800, 0x08a172dc ) /* U11 */
  1612.     ROM_LOAD( "1790.bin",     0x6000, 0x0800, 0x4e320f9d ) /* U12 */
  1613.     ROM_LOAD( "1791.bin",     0x6800, 0x0800, 0x3b4cba31 ) /* U13 */
  1614.     ROM_LOAD( "1792.bin",     0x7000, 0x0800, 0x7707b9f8 ) /* U14 */
  1615.     ROM_LOAD( "1793.bin",     0x7800, 0x0800, 0xa5d05155 ) /* U15 */
  1616.     ROM_LOAD( "1794.bin",     0x8000, 0x0800, 0xe4813da9 ) /* U16 */
  1617.     ROM_LOAD( "1795.bin",     0x8800, 0x0800, 0x4cd6ed88 ) /* U17 */
  1618.     ROM_LOAD( "1796.bin",     0x9000, 0x0800, 0x9f141a42 ) /* U18 */
  1619.     ROM_LOAD( "1797.bin",     0x9800, 0x0800, 0xec14ad16 ) /* U19 */
  1620.     ROM_LOAD( "1798.bin",     0xa000, 0x0800, 0x86743a4f ) /* U20 */
  1621.     ROM_LOAD( "1799.bin",     0xa800, 0x0800, 0x41198a83 ) /* U21 */
  1622.     ROM_LOAD( "1800.bin",     0xb000, 0x0800, 0x6a062a04 ) /* U22 */
  1623.     ROM_LOAD( "1801.bin",     0xb800, 0x0800, 0xf38488fe ) /* U23 */
  1624.  
  1625.     ROM_REGION( 0x1000, REGION_CPU2 )      /* 4k for 7751 onboard ROM */
  1626.     ROM_LOAD( "7751.bin",     0x0000, 0x0400, 0x6a9534fc ) /* 7751 - U34 */
  1627.  
  1628.     ROM_REGION( 0x4000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* background graphics */
  1629.     ROM_LOAD( "1516.bin",     0x0000, 0x2000, 0xe93a2281 ) /* ??? */
  1630.     ROM_LOAD( "1517.bin",     0x2000, 0x2000, 0x1e589101 ) /* ??? */
  1631.  
  1632.     ROM_REGION( 0x2000, REGION_SOUND1 )      /* 8k for sound */
  1633.     ROM_LOAD( "1543snd.bin",  0x0000, 0x1000, 0xb525ce8f ) /* U19 */
  1634.     ROM_LOAD( "1544snd.bin",  0x1000, 0x1000, 0x56c79fb0 ) /* U23 */
  1635.  
  1636.     ROM_REGION( 0x0020, REGION_SOUND2 )      /* 32 bytes for sound PROM */
  1637.     ROM_LOAD( "pr1512.u31",   0x0000, 0x0020, 0x414ebe9b )  /* U31 */
  1638.  
  1639.     ROM_REGION( 0x2000, REGION_USER1 )              /* background charmaps */
  1640.     ROM_LOAD( "1518a.bin",    0x0000, 0x2000, 0x2d5932fe ) /* ??? */
  1641. ROM_END
  1642.  
  1643. ROM_START( spaceod )
  1644.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  1645.     ROM_LOAD( "so-959.dat",   0x0000, 0x0800, 0xbbae3cd1 ) /* U25 */
  1646.     ROM_LOAD( "so-941.dat",   0x0800, 0x0800, 0x8b63585a ) /* U1 */
  1647.     ROM_LOAD( "so-942.dat",   0x1000, 0x0800, 0x93e7d900 ) /* U2 */
  1648.     ROM_LOAD( "so-943.dat",   0x1800, 0x0800, 0xe2f5dc10 ) /* U3 */
  1649.     ROM_LOAD( "so-944.dat",   0x2000, 0x0800, 0xb5ab01e9 ) /* U4 */
  1650.     ROM_LOAD( "so-945.dat",   0x2800, 0x0800, 0x6c5fa1b1 ) /* U5 */
  1651.     ROM_LOAD( "so-946.dat",   0x3000, 0x0800, 0x4cef25d6 ) /* U6 */
  1652.     ROM_LOAD( "so-947.dat",   0x3800, 0x0800, 0x7220fc42 ) /* U7 */
  1653.     ROM_LOAD( "so-948.dat",   0x4000, 0x0800, 0x94bcd726 ) /* U8 */
  1654.     ROM_LOAD( "so-949.dat",   0x4800, 0x0800, 0xe11e7034 ) /* U9 */
  1655.     ROM_LOAD( "so-950.dat",   0x5000, 0x0800, 0x70a7a3b4 ) /* U10 */
  1656.     ROM_LOAD( "so-951.dat",   0x5800, 0x0800, 0xf5f0d3f9 ) /* U11 */
  1657.     ROM_LOAD( "so-952.dat",   0x6000, 0x0800, 0x5bf19a12 ) /* U12 */
  1658.     ROM_LOAD( "so-953.dat",   0x6800, 0x0800, 0x8066ac83 ) /* U13 */
  1659.     ROM_LOAD( "so-954.dat",   0x7000, 0x0800, 0x44ed6a0d ) /* U14 */
  1660.     ROM_LOAD( "so-955.dat",   0x7800, 0x0800, 0xb5e2748d ) /* U15 */
  1661.     ROM_LOAD( "so-956.dat",   0x8000, 0x0800, 0x97de45a9 ) /* U16 */
  1662.     ROM_LOAD( "so-957.dat",   0x8800, 0x0800, 0xc14b98c4 ) /* U17 */
  1663.     ROM_LOAD( "so-958.dat",   0x9000, 0x0800, 0x4c0a7242 ) /* U18 */
  1664.  
  1665.     ROM_REGION( 0x6000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* background graphics */
  1666.     ROM_LOAD( "epr-13.dat",   0x0000, 0x1000, 0x74bd7f9a )
  1667.     ROM_LOAD( "epr-14.dat",   0x1000, 0x1000, 0xd2ebd915 )
  1668.     ROM_LOAD( "epr-15.dat",   0x2000, 0x1000, 0xae0e5d71 )
  1669.     ROM_LOAD( "epr-16.dat",   0x3000, 0x1000, 0xacdf203e )
  1670.     ROM_LOAD( "epr-17.dat",   0x4000, 0x1000, 0x6c7490c0 )
  1671.     ROM_LOAD( "epr-18.dat",   0x5000, 0x1000, 0x24a81c04 )
  1672.  
  1673.     ROM_REGION( 0x4000, REGION_USER1 )              /* background charmaps */
  1674.     ROM_LOAD( "epr-09.dat",  0x0000, 0x1000, 0xa87bfc0a )
  1675.     ROM_LOAD( "epr-10.dat",  0x1000, 0x1000, 0x8ce88100 )
  1676.     ROM_LOAD( "epr-11.dat",  0x2000, 0x1000, 0x1bdbdab5 )
  1677.     ROM_LOAD( "epr-12.dat",  0x3000, 0x1000, 0x629a4a1f )
  1678. ROM_END
  1679.  
  1680. ROM_START( pignewt )
  1681.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  1682.     ROM_LOAD( "cpu.u25",    0x0000, 0x0800, 0x00000000 ) /* U25 */
  1683.     ROM_LOAD( "1888c",      0x0800, 0x0800, 0xfd18ed09 ) /* U1 */
  1684.     ROM_LOAD( "1889c",      0x1000, 0x0800, 0xf633f5ff ) /* U2 */
  1685.     ROM_LOAD( "1890c",      0x1800, 0x0800, 0x22009d7f ) /* U3 */
  1686.     ROM_LOAD( "1891c",      0x2000, 0x0800, 0x1540a7d6 ) /* U4 */
  1687.     ROM_LOAD( "1892c",      0x2800, 0x0800, 0x960385d0 ) /* U5 */
  1688.     ROM_LOAD( "1893c",      0x3000, 0x0800, 0x58c5c461 ) /* U6 */
  1689.     ROM_LOAD( "1894c",      0x3800, 0x0800, 0x5817a59d ) /* U7 */
  1690.     ROM_LOAD( "1895c",      0x4000, 0x0800, 0x812f67d7 ) /* U8 */
  1691.     ROM_LOAD( "1896c",      0x4800, 0x0800, 0xcc0ecdd0 ) /* U9 */
  1692.     ROM_LOAD( "1897c",      0x5000, 0x0800, 0x7820e93b ) /* U10 */
  1693.     ROM_LOAD( "1898c",      0x5800, 0x0800, 0xe9a10ded ) /* U11 */
  1694.     ROM_LOAD( "1899c",      0x6000, 0x0800, 0xd7ddf02b ) /* U12 */
  1695.     ROM_LOAD( "1900c",      0x6800, 0x0800, 0x8deff4e5 ) /* U13 */
  1696.     ROM_LOAD( "1901c",      0x7000, 0x0800, 0x46051305 ) /* U14 */
  1697.     ROM_LOAD( "1902c",      0x7800, 0x0800, 0xcb937e19 ) /* U15 */
  1698.     ROM_LOAD( "1903c",      0x8000, 0x0800, 0x53239f12 ) /* U16 */
  1699.     ROM_LOAD( "1913c",      0x8800, 0x0800, 0x4652cb0c ) /* U17 */
  1700.     ROM_LOAD( "1914c",      0x9000, 0x0800, 0xcb758697 ) /* U18 */
  1701.     ROM_LOAD( "1915c",      0x9800, 0x0800, 0x9f3bad66 ) /* U19 */
  1702.     ROM_LOAD( "1916c",      0xa000, 0x0800, 0x5bb6f61e ) /* U20 */
  1703.     ROM_LOAD( "1917c",      0xa800, 0x0800, 0x725e2c87 ) /* U21 */
  1704.  
  1705.     ROM_REGION( 0x4000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* background graphics */
  1706.     ROM_LOAD( "1904c.bg",   0x0000, 0x2000, 0xe9de2c8b ) /* ??? */
  1707.     ROM_LOAD( "1905c.bg",   0x2000, 0x2000, 0xaf7cfe0b ) /* ??? */
  1708.  
  1709.     ROM_REGION( 0x4000, REGION_USER1 )              /* background charmaps */
  1710.     ROM_LOAD( "1906c.bg",  0x0000, 0x1000, 0xc79d33ce ) /* ??? */
  1711.     ROM_LOAD( "1907c.bg",  0x1000, 0x1000, 0xbc839d3c ) /* ??? */
  1712.     ROM_LOAD( "1908c.bg",  0x2000, 0x1000, 0x92cb14da ) /* ??? */
  1713.  
  1714.     /* SOUND ROMS ARE PROBABLY MISSING! */
  1715. ROM_END
  1716.  
  1717. ROM_START( pignewta )
  1718.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  1719.     ROM_LOAD( "cpu.u25",    0x0000, 0x0800, 0x00000000 ) /* U25 */
  1720.     ROM_LOAD( "1888a",      0x0800, 0x0800, 0x491c0835 ) /* U1 */
  1721.     ROM_LOAD( "1889a",      0x1000, 0x0800, 0x0dcf0af2 ) /* U2 */
  1722.     ROM_LOAD( "1890a",      0x1800, 0x0800, 0x640b8b2e ) /* U3 */
  1723.     ROM_LOAD( "1891a",      0x2000, 0x0800, 0x7b8aa07f ) /* U4 */
  1724.     ROM_LOAD( "1892a",      0x2800, 0x0800, 0xafc545cb ) /* U5 */
  1725.     ROM_LOAD( "1893a",      0x3000, 0x0800, 0x82448619 ) /* U6 */
  1726.     ROM_LOAD( "1894a",      0x3800, 0x0800, 0x4302dbfb ) /* U7 */
  1727.     ROM_LOAD( "1895a",      0x4000, 0x0800, 0x137ebaaf ) /* U8 */
  1728.     ROM_LOAD( "1896",       0x4800, 0x0800, 0x1604c811 ) /* U9 */
  1729.     ROM_LOAD( "1897",       0x5000, 0x0800, 0x3abee406 ) /* U10 */
  1730.     ROM_LOAD( "1898",       0x5800, 0x0800, 0xa96410dc ) /* U11 */
  1731.     ROM_LOAD( "1899",       0x6000, 0x0800, 0x612568a5 ) /* U12 */
  1732.     ROM_LOAD( "1900",       0x6800, 0x0800, 0x5b231cea ) /* U13 */
  1733.     ROM_LOAD( "1901",       0x7000, 0x0800, 0x3fd74b05 ) /* U14 */
  1734.     ROM_LOAD( "1902",       0x7800, 0x0800, 0xd568fc22 ) /* U15 */
  1735.     ROM_LOAD( "1903",       0x8000, 0x0800, 0x7d16633b ) /* U16 */
  1736.     ROM_LOAD( "1913",       0x8800, 0x0800, 0xfa4be04f ) /* U17 */
  1737.     ROM_LOAD( "1914",       0x9000, 0x0800, 0x08253c50 ) /* U18 */
  1738.     ROM_LOAD( "1915",       0x9800, 0x0800, 0xde786c3b ) /* U19 */
  1739.  
  1740.     ROM_REGION( 0x4000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* background graphics */
  1741.     ROM_LOAD( "1904a.bg",   0x0000, 0x2000, 0x00000000 ) /* ??? */
  1742.     ROM_LOAD( "1905a.bg",   0x2000, 0x2000, 0x00000000 ) /* ??? */
  1743.  
  1744.     ROM_REGION( 0x4000, REGION_USER1 )              /* background charmaps */
  1745.     /* NOTE: No background ROMs for set A have been dumped, so the
  1746.     ROMs from set C have been copied and renamed. This is to
  1747.     provide a reminder that these ROMs still need to be dumped. */
  1748.     ROM_LOAD( "1906a.bg",  0x0000, 0x1000, BADCRC(0xc79d33ce) ) /* ??? */
  1749.     ROM_LOAD( "1907a.bg",  0x1000, 0x1000, BADCRC(0xbc839d3c) ) /* ??? */
  1750.     ROM_LOAD( "1908a.bg",  0x2000, 0x1000, BADCRC(0x92cb14da) ) /* ??? */
  1751.  
  1752.     /* SOUND ROMS ARE PROBABLY MISSING! */
  1753. ROM_END
  1754.  
  1755.  
  1756. ROM_START( sindbadm )
  1757.     ROM_REGION( 2*0x10000, REGION_CPU1 )    /* 64k for code + 64k for decrypted opcodes */
  1758.     ROM_LOAD( "epr5393.new",  0x0000, 0x2000, 0x51f2e51e )
  1759.     ROM_LOAD( "epr5394.new",  0x2000, 0x2000, 0xd39ce2ee )
  1760.     ROM_LOAD( "epr5395.new",  0x4000, 0x2000, 0xb1d15c82 )
  1761.     ROM_LOAD( "epr5396.new",  0x6000, 0x2000, 0xea9d40bf )
  1762.     ROM_LOAD( "epr5397.new",  0x8000, 0x2000, 0x595d16dc )
  1763.     ROM_LOAD( "epr5398.new",  0xa000, 0x2000, 0xe57ff63c )
  1764.  
  1765.     ROM_REGION( 0x10000, REGION_CPU2 )     /* 64k for sound cpu (Z80) */
  1766.     ROM_LOAD( "epr5400.new",  0x0000, 0x2000, 0x5114f18e )
  1767.  
  1768.     ROM_REGION( 0x4000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* background graphics */
  1769.     ROM_LOAD( "epr5428.new",  0x0000, 0x2000, 0xf6044a1e )
  1770.     ROM_LOAD( "epr5429.new",  0x2000, 0x2000, 0xb23eca10 )
  1771.  
  1772.     ROM_REGION( 0x8000, REGION_USER1 )              /* background charmaps */
  1773.     ROM_LOAD( "epr5424.new",  0x0000, 0x2000, 0x4bfc2e95 )
  1774.     ROM_LOAD( "epr5425.new",  0x2000, 0x2000, 0xb654841a )
  1775.     ROM_LOAD( "epr5426.new",  0x4000, 0x2000, 0x9de0da28 )
  1776.     ROM_LOAD( "epr5427.new",  0x6000, 0x2000, 0xa94f4d41 )
  1777. ROM_END
  1778.  
  1779.  
  1780. /***************************************************************************
  1781.   Security Decode "chips"
  1782. ***************************************************************************/
  1783.  
  1784. static void init_astrob(void)
  1785. {
  1786.     /* This game uses the 315-0062 security chip */
  1787.     sega_security(62);
  1788. }
  1789.  
  1790. static void init_005(void)
  1791. {
  1792.     /* This game uses the 315-0070 security chip */
  1793.     sega_security(70);
  1794. }
  1795.  
  1796. static void init_monsterb(void)
  1797. {
  1798.     /* This game uses the 315-0082 security chip */
  1799.     sega_security(82);
  1800. }
  1801.  
  1802. static void init_spaceod(void)
  1803. {
  1804.     /* This game uses the 315-0063 security chip */
  1805.     sega_security(63);
  1806. }
  1807.  
  1808. static void init_pignewt(void)
  1809. {
  1810.     /* This game uses the 315-0063? security chip */
  1811.     sega_security(63);
  1812. }
  1813.  
  1814. static void init_sindbadm(void)
  1815. {
  1816.     /* This game uses an encrypted CPU */
  1817.     sindbadm_decode();
  1818. }
  1819.  
  1820.  
  1821. GAME( 1981, astrob,   0,       astrob,   astrob,   astrob,   ROT270, "Sega", "Astro Blaster (version 3)" )
  1822. GAME( 1981, astrob2,  astrob,  astrob,   astrob2,  astrob,   ROT270, "Sega", "Astro Blaster (version 2)" )
  1823. GAMEX(1981, astrob1,  astrob,  astrob,   astrob1,  astrob,   ROT270, "Sega", "Astro Blaster (version 1)", GAME_NOT_WORKING )
  1824. GAMEX(1981, 005,      0,       005,      005,      005,      ROT270, "Sega", "005", GAME_NO_SOUND )
  1825. GAME( 1982, monsterb, 0,       monsterb, monsterb, monsterb, ROT270, "Sega", "Monster Bash" )
  1826. GAME( 1981, spaceod,  0,       spaceod,  spaceod,  spaceod,  ROT270, "Sega", "Space Odyssey" )
  1827. GAMEX(1983, pignewt,  0,       pignewt,  pignewt,  pignewt,  ROT270, "Sega", "Pig Newton (version C)", GAME_NO_SOUND )
  1828. GAMEX(1983, pignewta, pignewt, pignewt,  pignewta, pignewt,  ROT270, "Sega", "Pig Newton (version A)", GAME_NO_SOUND )
  1829. GAME( 1983, sindbadm, 0,       sindbadm, sindbadm, sindbadm, ROT270, "Sega", "Sindbad Mystery" )
  1830.